我有一個關於find_by_name的附加條件 - curent_user.id的問題。Rails:find_by_name和current_user.id
例如,我有模型:用戶,心情和帖子。 一個用戶有很多心情,一個心情只有一個用戶。情緒名稱並不是唯一的。
當用戶輸入他的帖子時,他可以鍵入(自動完成)並選擇他的心情,但只能由他自己創建。
現在我有這樣的(這部分工作得很好):
<%= f.text_field :mood_name, {"data-provide"=>"some_autocomplete_script", "data-source"=>"#{Mood.where(:user_id => current_user.id).collect {|x| x.name}}"} %>
我的帖子模式有:
def mood_name
mood.try(:name)
end
def mood_name=(name)
self.mood = Mood.find_by_name(name)
end
所以,我怎麼能找到記錄by_name和current_user.id?不只是名稱,名稱在表格中並不是唯一的,但它是每個用戶唯一的。
ps。當前用戶在application_controller中定義:
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
pps。情緒具有user_id列,與帖子相同。 我的形式:
<%= form_for(@post) do |f| %>
<%= f.text_field :somecontent %>
<%= f.text_field :mood_name, {"data-provide"=>"some_autocomplete_script", "data-source"=>"#{Mood.where(:user_id => current_user.id).collect {|x| x.name}}"} %>
<%= f.submit %>
<% end %>
我post_controller:
def new
@post = Post.new
end
def create
@post = Post.new(params[:post])
@post.user_id = current_user.id
respond_to do |format|
if @post.save
#save actions
else
# else :)
end
end
end
而且關係:
One user has many posts and many moods
Every mood has one user and many posts (user_id)
Every post has one user and one mood (user_id and mood_id)
情緒有一個user_id列,對不對?你嘗試了'Mood.find_by_name_and_user_id(name,current_user.id)? – emrass 2012-02-03 16:09:56
是的,我試過了,但在這種情況下,它返回「未定義的局部變量或方法'current_user'」:( – 2012-02-03 16:21:41
儘量使郵政有一個心情,並通過''current_user.moods'在您的職位表格作爲集合。 – 2012-02-03 17:31:01