def create @book = Book.new(params[:book]) respond_to do |format| if @book.save …省略… end end
def create @book = Book.new @book.isbn = params[:book][:isbn] @book.title = params[:book][:title] …省略… respond_to do |format| if @book.save …省略… end end
class User < ActiveRecord::Base attr_protected :roles end
@user = User.new({ :username => 'こっちは更新される', :roles => 'ここは更新されない' })
@user.roles = 'これなら、更新可能'
def update_all count = Book.update_all('price = price * 1.05',['publish = ?','出版社A']) render :text => "#{count}件更新!" end
UPDATE "books" SET price = price * 1.05 WHERE (publish = '出版社A')
def update_all2 count = Book.update_all('price = price * 1.5',nil,{:order => 'published ASC', :limit => 3 }) render :text => "#{count}件更新!" end
SELECT "books".* FROM "books" ORDER BY published ASC LIMIT 5
Book.destroy(params[:id])
SELECT "books".* FROM "books" WHERE "books"."id" = ? LIMIT 1[0m [["id", "IDの値"]] DELETE FROM "books" WHERE "books"."id" = ? [["id", IDの値]]
def destroy_all books = Book.destroy_all(['publish = ?','出版社A']) render :text => "削除完了" end
SELECT "books".* FROM "books" WHERE (publish = '出版社A') DELETE FROM "books" WHERE "books"."id" = ? [["id", IDの値1]] DELETE FROM "books" WHERE "books"."id" = ? [["id", IDの値2]]
rails g scaffold member name:string email:string lock_version:integer
class CreateMembers < ActiveRecord::Migration def change create_table :members do |t| t.string :name t.string :email t.integer :lock_version, :default => 0 t.timestamps end end end
rake db:migrate
<% hidden_field :lock, :lock_version %> <div class="field"> <%= f.label :name %><br /> <%= f.text_field :name %> </div>
increment(attribute, by = 1) | まさに、インクリメントする |
decrement(attribute, by = 1) | こっちはデクリメントね |
new_record?() | 新規レコードチェック |
persisted?() | 保存済みチェック |
toggle(attribute) | ブール型のON/OFFの反転。これ、いいね! |
touch(attribute = nil) | 日付型を現在時刻で更新 |
changed() | 変更されたカラム名を取得 |
changed?() | 変更されたかチェック |
changed_attributes() | 変更された情報のハッシュ(カラム名 => 変更前の値)を返す |
changes() | 変更された情報のハッシュ(カラム名 => [変更前,変更後])を返す。つうか、これ、すごいな。 |
previous_changes() | 保存前の変更情報のハッシュ(カラム名 => [変更前,変更後])を返す |