HELLO, I’M SERHAT AND THIS IS MY FANCY TITLE.

Ruby on rails ve güvenlik - routes


Rails uygulamalarında route'ların güvenliğini sağlarken Devise gibi authentication GEM'lerinin sağladığı helper'lardan ve lambda metodundan yararlanabilirsiniz. Örneğin sadece super_admin rolüne sahip kullanıcılara açık olmasını istediğiniz route'ları şu şekilde tanımlayabilirsiniz:

# config/routes.rb

authenticate :user, lambda { |u| u.is_super_admin? } do
  mount Resque::Server => '/admin/resque'
  namespace :admin do
    resources :ip_lists, except: :show
    resources :token_users, except: :show
  end
end

Artık admin/resque, admin/ip_lists ve admin/token_users yolları sadece super_admin'ler için erişilebilir olacak.

Continue reading

Rails'te CSV İşlemleri - Roo ve SmarterCSV GEM'leri


Roo GEM

CSV, XLS ve ODS'yi başarıyla okuyor, ancak tüm yaptığı bundan ibaret - başka bir özelliği yok.

Roo GEM CSV Load

require 'roo'
s = Roo::CSV.new("/home/msdundar/Masaüstü/import.csv")
=> #<Roo::CSV:0x9db2adc @filename="/home/msdundar/Masaüstü/import.csv", @options={}, @cell={}, @cell_type={}, @cells_read={}, @first_row={}, @last_row={}, @first_column={}, @last_column={}, @header_line=1, @default_sheet="default">

Roo GEM CSV Read

# encoding: utf-8
require 'roo'
s = Roo::CSV.new("/home/msdundar/Masaüstü/import.csv")

for i in (s.first_row..s.last_row)
  puts s.cell(i,3)
end
Continue reading

Rails - Callbacks


Kullanıcılardan herhangi biri hesabını iptal ettiği zaman adminlere bilgilendirme maili gitmesi, bir işlem tetiklendiğinde - başka bir işlemin de gerçekleşmesi veya bir model nesnesi oluşturduğunuzda, başka bir model nesnesinin de onla ilişkili olarak oluşması gibi durumları tanımlarken ihtiyaç duyduğumuz metodların en sık kullanılanları Rails'te 6 tanedir. Bunlar:

  • before_create
  • after_create
  • before_save
  • after_save
  • before_destroy
  • after_destroy

Zaten bu ifadelerin ne iş yaptığı isimlerinden de anlaşıldığı için tekrarlamayacağım.

Continue reading

Rails CRUD Cheatsheet


Metod Etki Alanı Örnek Not
new Model Student.new(adi: 'Serhat', soyadi: 'Dundar') Model bir nesneye atandığında, nesnenin save metodu ile kayıt edilmesi gerekir.
new_record? Nesne student.new_record? true veya false döndürür.
attributes Nesne student.attributes attribute'leri hash olarak döndürür.
* attribute_ismi Nesne student.finalnotu = "65" Model ismi komut olarak çağırılarak mümkün attribute'ler listelenebilir.
save Nesne student.save SQL muadili: INSERT INTO. Eğer nesne daha önceden mevcutsa UPDATE.
count Model & Nesne Student.count veyastudent.count SQL muadili: SELECT COUNT(*) FROM "students"
create Model Student.create(adi: 'Serhat', soyadi: 'Dundar') veya; x = {ad: 'Serhat', soyad: 'Dundar'} ve sonra Student.create(x) new metodundan farklı olarak doğrudan save işlemi yapar. SQL muadili: INSERT INTO
find(:id) Model & Nesne Student.find(1) veya Student.find([1,5]) find metodunu bir nesneye atayıp, daha sonra nesneyi çaşitli işlerde kullanabiliriz. SQL muadili: SELECT "students".* FROM "students" WHERE "students"."id" = ? LIMIT 1 [["id", 1]]
first Model & Nesne Student.first SQL muadili: SELECT "students".* FROM "students" ORDER BY "students"."id" ASC LIMIT 1
last Model & Nesne Student.last SQL muadili: SELECT "students".* FROM "students" ORDER BY "students"."id" DESC LIMIT 1
all Model Student.all SQL muadili: SELECT "students".* FROM "students"
class Model & Nesne Student.class [Class] veya student.class [Array] -
size Nesne student.size Nesnenin boyutunu verir.
order Model Student.order('ogrenci_no') SQL muadili: SELECT "students".* FROM "students" ORDER BY ogrenci_no
where Model Student.where(ogrenci_no: '09310009') SQL muadili: SELECT "students".* FROM "students" WHERE "students"."title" = 'My first post'
update_attributes Nesne student.update_attributes(ad: 'Mustafa', ogrenci_no: '08310009') true veya false döndürür.
destroy Nesne & Model Nesne üzerinde kullanım: student = Student.last && student.destroy. Model üzerinde kullanım: Student.last.destroy veya; Student.destroy(1) veya; Student.destroy([1,5]) DELETE FROM students WHERE id = 5; Nesne üzerinde kullanıldığında, kayıt silinmiş olmasına rağmen student nesnesi hala bellekte tutulur, fakat durumu read-only'dir, yani frozen durumdadır.
delete Model Student.delete(1) veya Student.delete([1,5]) find ve create gibi işlemi anında uygularlar. SQL muadili: DELETE FROM "students" WHERE "students"."id" = 1
delete_all Model Student.delete_all("ogrenci_no = 09310009") delete'den farklı olarak şartlı silme işlemlerini yapar. delete_all argümansız çalıştırılırsa tablonun tüm satırlarını siler!
destroy_all Model Student.destroy_all('ogrenci_no = 09310009') delete'den farklı olarak şartlı ve ilişkili silme işlemlerini yapar. destroy_all argümansız çalıştırılırsa tablonun tüm satırlarını ve ilişkili olduğu tüm tabloları siler!
Continue reading
Date: | Tags: ruby on rails dersleri, rails crud işlemleri | Categories: tech, ruby

Ruby günlüğü - gün 11


Ruby'de if, elsif, else, unless gibi pek çok kontrol yapısı bulunmaktadır. Bu yazıda kontrol yapılarına ilişkin bazı örnekler gösterceğim.

Ruby'de if ve unless koşulu

Tek satır için basit bir örnek:

yas = 23
puts "Yasiniz yeni yasalara gore alkol almak icin cok kucuk" if yas < 24

Multiple satır için basit bir örnek :

yas = 23
if yas < 23
  puts "Yasiniz yeni yasalara gore alkol almak icin cok kucuk"
end
Continue reading