В ActiveRecord есть два метода, которые могут пригодиться в таких случаях: attr_protected
и attr_accessible
.
Вы используете их так:
class MyModel < ActiveRecord::Base
attr_accessible :fname, :lname #Allow mass-assignment
attr_protected :secret #Do not allow mass-assignment
end
model = MyModel.new(:fname => "Firstname", :lname => "Lastname", :secret => "haha")
puts model.fname # "Firstname"
puts model.lname # "Lastname"
puts model.secret = nil # Can not be set through mass-assignment
model.secret = "mysecret" # May only be assigned like this
puts model.secret # "mysecret"
Однако, если вам нужна только эта функциональность в одном месте, решение Salil будет работать так же хорошо.
Следует отметить, что вы должны использовать attr_acessible для атрибутов белого списка, которые можно назначать массово, и защищать все остальные атрибуты. Тем самым вы мешаете подлым людям обновлять данные, к которым они не должны прикасаться.
См. документы для получения дополнительной информации.