2012-02-03 14 views
1

我有一個關於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) 
+1

情緒有一個user_id列,對不對?你嘗試了'Mood.find_by_name_and_user_id(name,current_user.id)? – emrass 2012-02-03 16:09:56

+0

是的,我試過了,但在這種情況下,它返回「未定義的局部變量或方法'current_user'」:( – 2012-02-03 16:21:41

+0

儘量使郵政有一個心情,並通過''current_user.moods'在您的職位表格作爲集合。 – 2012-02-03 17:31:01

回答

1

我認爲這個問題是您在模型不能使用是helper_method。 嘗試通過方法的參數傳遞給它像

def mood_name=(name, user) 
    self.mood = Mood.find_by_name_and_user_id(name, user.id) 
end 

然後通過current_user在那裏你調用這個方法

+0

謝謝,我認爲這是正確的方式,但我不明白我需要把第二個參數: - [ – 2012-02-03 16:58:56

+0

也許在控制器?我不完全明白你在做什麼。你能提供更多的表單,控制器代碼嗎? – 2012-02-03 17:07:25

+0

我已經用pps更新了我的問題。 :) – 2012-02-03 17:32:52

相關問題