динамически генерировать атрибут на объекте, ruby, rails - PullRequest
0 голосов
/ 18 октября 2010

С учетом этих параметров:

ex: 1

{:field => 'admin', :id => "1"}

ex: 2

{:field => 'client', :id => "1"}

ex: 3

{:field => 'partner', :id => "1"}

IsВозможно, (и, конечно, как) я мог бы динамически применить это к User модели, такой как:

контроллер

#note the field attribute is not a field
#the field attribute I'm trying to set above to what are given in the params hash

def update_user
    field = params[:field]
    @user = User.find(params[:id])
    @user.field = !@user.field
    @user.save(false)
    render :nothing => true
end

FYI

Почемуне просто отправить сообщение с параметрами и обновить с помощью update_attributes(params[:user])?Потому что атрибуты пользователей защищены, и просто проще обновить логическое значение таким образом.

1 Ответ

1 голос
/ 19 октября 2010

Я бы сделал что-то вроде этого:

@user = User.where("#{params[:field]} = ?", params[:id]).first if ["admin", "client", "partner"].include?(params[:field])

(«включить?» - это проверка безопасности, чтобы запретить пользователям выбирать какие-либо другие поля, которые вам не нужны)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...