У меня вопрос о find_by_name с дополнительным условием - curent_user.id.
Например, у меня есть модели: User, Mood и Post.У одного пользователя много настроений, а у одного - только один.Имя настроения не уникально.
Когда пользователь печатает свой пост, он может печатать (с автозаполнением) и выбирать свое настроение, но только созданный им сам.
Теперь у меня есть эта частьхорошо работает):
<%= 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
Итак, как мне найти запись по имени и по current_user.id?Не только по имени, имя не является уникальным в таблице, но оно уникально для каждого пользователя.
пс.Текущий пользователь определен в 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 %>
Мой пост_контроллер:
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)