неизвестный атрибут с устройством - PullRequest
4 голосов
/ 03 июля 2011

Для моей модели данных у меня есть два разных типа: члены семьи и друзья.Мой план состоит в том, чтобы каждый из них имел внешний ключ для таблицы User, которая создается Devise.Поэтому, когда пользователь регистрируется, я хочу, чтобы он или перешел в / friends / sign_up или family_members / sign_up.Итак, мой класс Друг -

class Friend < ActiveRecord::Base
  belongs_to :label
  belongs_to :user
  belongs_to :gender
  belongs_to :location
  belongs_to :orientation
  belongs_to :matchmaker

  def after_initialize
    self.build_user if self.user.nil?
  end
  #accepts_nested_attributes_for :user
  delegate :username, :to => :user
  delegate :email, :to => :user
  delegate :password, :to => :user
  delegate :password_confirmation, :to => :user
  delegate :rememebr_me, :to => :user

  # 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 :username, :email,  :password, :password_confirmation, :remember_me
end

, а мой класс Пользователь -

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

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

Я также использую Formtastic для своего просмотра.Прямо сейчас я получаю

unknown attribute: username

с параметрами

{"utf8"=>"✓", "authenticity_token"=>"8ScsJebuCWnflaRQkp9MsBuaaqfzQKaZBXotLyNwNyM=",
"friend"=>{"username"=>"aaaa",
"email"=>"aaa@aaa.com",
"password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]"},
"commit"=>"Create Friend"}

Прямо сейчас, я просто случайно пытаюсь добавить nested_attributes и все, что угодно, к двум моделям.Я мог бы использовать наследование таблиц, но я бы предпочел этого не делать (если я не могу добавить внешний ключ к подклассам, указывающим на суперкласс, это было бы хорошо).

Ответы [ 3 ]

2 голосов
/ 04 июля 2011

Хорошо, я исправил свою проблему к своему удовлетворению.Вот мой новый код для дальнейшего использования:

class Friend < ActiveRecord::Base 
  belongs_to :friend_user, :class_name => 
end

class FriendUser < User
  set_table_name :users
  has_one :friend
end
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 :username, :email,     :password, :password_confirmation, :remember_me
end
0 голосов
/ 03 июля 2011

Вы уверены, что добавили поле 'username' для миграции пользователей? Devise не добавляется автоматически.

0 голосов
/ 03 июля 2011

Попробуйте добавить это в модель вашего друга:

attr_accessible :username, :email,  :password, :password_confirmation, :remember_me

Вы пытались сделать что-то вроде этого:

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
end

class Friend < User
  belongs_to :label
  belongs_to :user
  belongs_to :gender
  belongs_to :location
  belongs_to :orientation
  belongs_to :matchmaker
end

class FamilyMember < User
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...