我有一個是基於以下模型嵌套形式 - 一個教訓,有許多問題,每個問題有很多答案,和答案屬於用戶。Rails的嵌套表格 - 由當前用戶篩選,課程疑問的解答,用戶
我開發一個嵌套形式,使新用戶可以查看問題和後答案。如果用戶過去輸入了答案,我希望這些答案出現;否則顯示空白字段。我也不希望用戶看到其他人的答案。
所以,我無法弄清楚如何只顯示當前登錄的用戶的答案。我創建了一個named_scope,但它不起作用(請參閱我的編輯操作)。現在,在編輯時,我會看到每個問題下所有用戶的答案。 構建視圖我跟着嵌套形式例如,從Railscast 196
謝謝您的幫助。 下面是顯示我的模型和課程控制器的代碼。
class Lesson < ActiveRecord::Base
has_many :questions, :dependent => :destroy
accepts_nested_attributes_for :questions, :allow_destroy => true,
:reject_if => proc { |a| a['data'].blank? }
end
class Question < ActiveRecord::Base
belongs_to :lesson
has_many :answers
accepts_nested_attributes_for :answers,
:reject_if => lambda { |a| a['data'].blank? }, :allow_destroy => true
end
class Answer < ActiveRecord::Base
belongs_to :question
belongs_to :user
named_scope :by_user,
lambda {|user| {:conditions => ["user_id = ?", user]}}
end
class User < ActiveRecord::Base
has_many :answers
accepts_nested_attributes_for :answers,
:reject_if => lambda { |a| a['name'].blank? }, :allow_destroy => true
end
LESSONS Controller:
def edit
@lesson = Lesson.find(params[:id])
if current_user_admin == 99 # show blank question field if admin user
@questions = @lesson.questions.build(:user_id => current_user)
end
@lesson.questions.each do |question|
# if there are no answers for this user
if question.answers.by_user(current_user.id).size != 1
# if the current user is not admin
if current_user_admin != 99
question.answers.by_user(current_user.id).build(:user => current_user)
end
end
end
end
有沒有辦法到過濾器添加到模型?我希望我可以更新我的問題模型來說has_many:answers,:conditions => [「user_id =?,current_user.id] < - 我意識到current_user不屬於模型。在這種情況下,有 – Alex 2010-10-22 21:44:27