【发布时间】:2010-11-12 00:40:28
【问题描述】:
我有以下效果很好:
@request_thread = current_user.request_threads.new(params[:request_thread])
我有这个效果很好:
@requestable = find_requestable
@request_thread = @requestable.request_threads.new(params[:request_thread])
但如果我尝试第二行:
@request_thread = @requestable.current_user.request_threads.new(params[:request_thread])
使用 current_user 我得到以下错误:
NoMethodError (undefined method `current_user' for #<Photo:0x10f95c828>):
app/controllers/request_threads_controller.rb:52:in `create'
app/middleware/flash_session_cookie_middleware.rb:14:in `call'
我在这里搞砸了什么?
谢谢
更新 - 使用 find_requestable
# http://asciicasts.com/episodes/154-polymorphic-association
def find_requestable
params.each do |name, value|
if name =~ /(.+)_id$/
return $1.classify.constantize.find(value)
end
end
nil
end
【问题讨论】:
-
可能是这样的... @requestable.find_by_user(current_user).request_threads.new(params[:request_thread])
标签: ruby-on-rails activerecord ruby-on-rails-3 activemodel