我傾向於不同意使用attr_accessors來處理特定於操作的條目元素的方法。如果需要記錄Cs,那麼這很有意義,但有時您需要的數據與模型無關,只與手邊的特定操作有關,例如'執行操作時執行一些重量級操作'。
假設您有一個註冊表單,並且您沒有使用OAuth,並且您可以選擇在註冊時指定Twitter用戶名和密碼。這是罰款:
<%= form.input :twitter_username %>
<%= form.input :twitter_password, :as => :password %>
但下面這一點讓我困惑 - 它像在這種情況下formtastic實際上帶走的是已經存在。有沒有添加params [:你的對象]的方法,同時仍然有助於做所有它可愛的佈局的東西?
如何:
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
這樣做的能力可能在那裏 - 有人知道如何有效地做到我認爲上面的好主意嗎?
謝謝!