Я склонен не согласиться с подходом использования attr_accessors для элементов входа, специфичных для действий. Если необходимо записать ТиС, тогда это имеет смысл, но иногда вам нужны данные, которые действительно не связаны с моделью и связаны только с конкретным конкретным действием, например, «выполнить некоторую тяжелую операцию при выполнении действия».
Допустим, у вас есть форма регистрации, и вы не используете OAuth, и у вас есть возможность указать имя пользователя и пароль в твиттере при регистрации. Это нормально:
<%= form.input :twitter_username %>
<%= form.input :twitter_password, :as => :password %>
Но этот бит ниже сбивает меня с толку - это как formtastic в этом случае фактически забирает то, что уже есть. Есть ли способ добавить params [: your-object], в то же время заставляя formastic делать все свои приятные вещи в макете?
Как насчет:
class User < ActiveRecord::Base
...
#I don't want this here. Its only for UserController#create.
#attr_accessor :tweet_when_signed_up
...
end
и
<%= form.input :tweet_when_signed_up, :as => :checkbox, :param_only => true %>
param_only
- мое выдуманное предложение. Он говорит: «Это даже не временное свойство. Это только для этого действия.
class UserController < ActionController::Base
...
def create
if params[:tweet_when_signed_up] # haven't done this yet -- == 1 or !.nil?
Tweeter.tweet( ... )
end
@user = User.create( params[:user] )
end
Способность делать это, вероятно, есть - кто-нибудь знает, как эффективно делать то, что я считаю хорошей идеей выше?
спасибо!