has_many: не устанавливая все столбцы при создании - PullRequest
0 голосов
/ 23 ноября 2011

У меня есть пользователи и проблемы, к которым присоединяется has_many через модель, называемую избирателей.Пользователи голосуют по вопросам.Пользователь может голосовать "за" или "против", а модель соединения содержит user_id и issue_id.Однако, когда я иду, чтобы создать новый голос, создается только один из столбцов.Я знаю, что делаю это неправильно.Вот мои файлы:

class Issue < ActiveRecord::Base
  has_many :associations, :dependent => :destroy

  has_many :users, :through => :associations

  has_many :voterships
  has_many :users, :through => :voterships

  belongs_to :app

  def cast_vote_up!
    voterships.create!(:issue_id => self.id)
  end
end

и это в контроллере избирателей:

  def create
    session[:return_to] = request.referrer
    #debugger
    @issue = Issue.find(params[:votership][:issue_id])
    @issue.cast_vote_up!
    redirect_to session[:return_to]
  end

модель голосования:

class Votership < ActiveRecord::Base
  belongs_to :user
  belongs_to :issue
end

и вид с кнопкой голосования:

<%= form_for(@issue.voterships.build(:issue_id => @issue.id)) do |f| %>
  <%= f.hidden_field :issue_id %>
  <%= f.submit "VoteUp" %>
<% end %>

1 Ответ

1 голос
/ 23 ноября 2011

Вам необходимо предоставить current_user.id для @ issue.cast_vote_up!method.

def cast_vote_up!(user_id)
  voterships.create!(:issue_id => self.id, :user_id => user_id)
end

Было бы хорошо иметь некоторую проверку в модели Votership, по крайней мере, для присутствия user_id и issue_id.

...