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)
ムードがUSER_ID列を持って、このメソッドを呼び出し
current_user
を渡すのようなメソッドのパラメータを通してそれを渡すようにしてください?あなたは'Mood.find_by_name_and_user_id(name、current_user.id)を試しましたか? – emrass
ええ、私は試しましたが、このケースでは "未定義のローカル変数またはメソッド' current_user '"を返します:( –
ポストに1つの気分があり、あなたのポストフォームに' current_user.moods'をコレクションとして渡してください。 –