ここでは簡単な問題はありません。私はRailsの3.1を使用し、次のクラス持っている:私は大量の割り当て(ヘルパーを構築するのActiveRecordの1)を使用してジョブを作成しようとしている私のコントローラで質量設定値以外の値を設定または保存できません
class Job < ActiveRecord::Base
attr_accessor :active
attr_accessible :roleTagline, :projectTagline, :projectStartDate, :projectDuration, :postedStartDate,
:postedEndDate, :skillsRequired, :skillsPro, :experiencedRequired, :description, :active
scope :is_active, :conditions => {:active => 1}
validates :roleTagline, :presence => true,
:length => { :minimum => 5 }
validates :projectTagline, :presence => true,
:length => { :minimum => 5 }
belongs_to :job_provider
# def active=(act)
# @active = act
# end
end
をし、その後、「アクティブに設定"属性を1に設定し、ジョブを保存します。ここでは、コントローラのコードです:私はattr_accessorを削除し、代わりに私自身のセッターを書くのすべての組み合わせを試してみた
def create
@job_provider = current_user.job_provider
@job = @job_provider.jobs.build(params[:job])
@job.active= 1 # debug logging @job.active here gives an empty string
if @job.save # etc.
は、私はに滞在する属性を取得するための正しい組み合わせを見つけることができないよう私は何でもモデル。これは、@ job.save属性がなくなる前でも(デバッグログを使用しているため)、私は思っていないアクティブなレコードではありません。私は周りを探索したが、私が間違っていることを理解できない。誰でも助けてくれますか?
編集:熊手からschema.rb:
create_table "jobs", :force => true do |t|
t.string "roleTagline"
t.string "projectTagline"
t.date "projectStartDate"
t.integer "projectDuration"
t.date "postedStartDate"
t.date "postedEndDate"
t.string "skillsRequired"
t.string "skillsPro"
t.string "experiencedRequired"
t.string "description"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "active"
t.integer "job_provider_id"
end
別の編集:さらに、私は最終的にここにこの答えを見つけたグーグル後
OK:
How can I override the attribute assignment in an active record object?
の場合クラスインスタンスではなくActiveRecord属性を変更する場合は、次の操作を行う必要があります。
自己[:フィールド名] =値
"@ job.save属性がなくなった"とはどういう意味ですか?また、あなたの例を複製する必要があるということだけが残っているので、あなたのスキーマをjobsテーブルに投稿できますか? –
私は、to_yaml関数と@ job.activeでオブジェクトにアクセスして両方の結果と挿入用のSQLを使用して、属性が設定されていないことを示すdebug.logを実行しようとしました。 – Dave
データベーススキームを取得しようとしています。 「アクティブな」列は整数です。 – Dave