2012-02-03 2 views
1

find_by_nameに関する追加の条件(curent_user.id)に関する質問があります。Rails:find_by_nameとcurrent_user.id

たとえば、私はモデルがあります:ユーザ、ムード、ポスト。 1人のユーザーには気分が多く、1人の気分には1人のユーザーしかいません。気分の名前はユニークではありません。

ユーザーが自分の投稿を入力するときに入力すると(オートコンプリート付き)、気分を選択できますが、自分で作成します。

今、私はこれを持っている(この部分がうまく機能):

<%= f.text_field :mood_name, {"data-provide"=>"some_autocomplete_script", "data-source"=>"#{Mood.where(:user_id => current_user.id).collect {|x| x.name}}"} %> 

マイPostモデルがありますので、

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列を持って、このメソッドを呼び出しcurrent_userを渡す

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

のようなメソッドのパラメータを通してそれを渡すようにしてください?あなたは'Mood.find_by_name_and_user_id(name、current_user.id)を試しましたか? – emrass

+0

ええ、私は試しましたが、このケースでは "未定義のローカル変数またはメソッド' current_user '"を返します:( –

+0

ポストに1つの気分があり、あなたのポストフォームに' current_user.moods'をコレクションとして渡してください。 –

答えて

1

は、私はこの問題は、あなたがモデルにhelper_method使用カントだと思います。 右、そして、あなたは

+0

ありがとう、私はそれが正しい方法だと思いますが、私は2番目の引数を置く必要があることを理解できません: - [ –

+0

多分コントローラですか?私はあなたがしていることを完全に理解していません。あなたのフォーム、コントローラのより多くのコードを提供できますか? –

+0

私はppsで質問を更新しました。 :) –

関連する問題