我被这最近咬伤,并且它会是确切地知道发生了什么事要做到这一点非常有用,这样其他人避免这个错误。
我有一个模型的用户,有像这样的模式:
create_table "users", :force => true do |t|
t.string "user_name"
t.string "first_name"
t.string "last_name"
t.string "email"
t.string "location"
t.string "town"
t.string "country"
t.string "postcode"
t.boolean "newsletter"
在类user.rb,我有三种方法attr_accessor:
class User < ActiveRecord::Base
# lots of code
attr_protected :admin, :active
# relevant accessor methods
attr_accessor :town, :postcode, :country
end
现在,在我的用户控制,如果我有以下方法:
def create
@user = User.new params[:user]
end
当我尝试创建内容的新用户在此PARAMS哈希:
--- !map:HashWithIndifferentAccess
# other values
country: United Kingdom
dob(1i): "1985"
dob(2i): "9"
dob(3i): "19"
town: london
返回的对象为空字符串country
, town
和邮政编码postcode
值,就像这样。
(rdb:53) y user1
--- !ruby/object:User
attributes:
# lots of attributes that aren't relevant for this example, and are filled in okay
postcode:
country:
town:
我可以告诉大家,attr_accessor中方法重挫活动记录现有的存取方法,因为当我带他们出去一切工作正常,因此该解决方案是相当简单 - 只是带他们出去。
但究竟什么是发生在这里?
我期待在这里的活动记录Rails的API文档 ,并在这里Ruby的自己对文档attr_accessor
,但我仍然略显朦胧如何attr_accessor
这里摔东西。
任何能够提供一些线索,制止这种其他一些可怜的灵魂下跌犯规?