これは非常に奇妙です。Rails 2.3.12 アプリをアップグレードしていますが、同じ問題が何度も発生しています。私は困惑しており、他に何も触れていないようです。
私は2つのモデルを持っています:
class User < ActiveRecord::Base
has_many :logs, :class_name => 'UserLog'
end
と
class UserLog < ActiveRecord::Base
attr_accessor :site_id, :controller, :action, :url, :session
belongs_to :user
validates_presence_of :user
end
次に、別のコントローラーでこれを行っています:
def log_user_activity
@current_user.logs.create(:site_id => @site.id, :controller => params[:controller],
:action => params[:action], :url => request.path,
:session => request.session_options[:id]) if @current_user
end
ご覧のとおり、非常に簡単ですが、log_user_activity を呼び出すと、次のようになります。
Can't mass-assign protected attributes: site_id, controller, action, url, session
ただし、すべての作成またはビルドをこれに変更すると:
def log_user_activity
log = @current_user.logs.new
log.site_id = @site.id
log.controller = params[:controller]
log.action = params[:action]
log.url = request.path
log.session = request.session_options[:id]
log.save
end
そしたらうまくいく!?
誰もこれを見たことがありますか?手がかりはありますか?