В рельсах что не так с моим способом построения петиций модели? - PullRequest
0 голосов
/ 15 декабря 2011
class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me

  #relationsships
  has_many :petitions
  #signatures
  has_many :signatures
  has_many :signed_petitions ,:through => :signatures , :class_name => 'Petitions' , :foreign_key => 'petition_id'
end

class Signatures < ActiveRecord::Base
    belongs_to :signers, :class_name => 'User'
    belongs_to :petitions

end

class Petition < ActiveRecord::Base
  attr_accessible :letter, :about, :title, :goal
   #relationships
   belongs_to :user
   #signature
   has_many :signatures
   has_many :signers ,:through => :signatures , :class_name => 'User'

end

Я получаю эту ошибку:

>Petition.first.signers
NameError: uninitialized constant Petition::Signature

кажется, что мои отношения многие ко многим не сработали, почему?

1 Ответ

1 голос
/ 15 декабря 2011

Названия моделей, по соглашению, являются единственными. Как вы можете видеть по ошибке, она ищет Signature, когда у вас есть Signatures. Вам следует изменить название вашей модели на Signature. Кроме того, в Signatures вы используете множественные имена в отношениях belongs_to - они также должны быть единственными.

class Signature < ActiveRecord::Base
  belongs_to :signer, :class_name => 'User'
  belongs_to :petition
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...