1

Personというモデルがあります。User に Person を継承させたい。

class Person < ActiveRecord::Base
  belongs_to :organization
  validates :email, :presence => true, :uniqueness => true
end

class User < Person

  devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable, :lockable

  # for some reason I HAVE TO user attr_accessor on the following attributes or
  # else I would get noMethodError or something like that, I'll fix this later
  attr_accessor :username, :encrypted_password, :locked_at, :current_sign_in_at, :last_sign_in_at, :current_sign_in_ip, :last_sign_in_ip, :sign_in_count

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :username, :password, :password_confirmation, :remember_me,
    :first_name, :last_name, :mobile_phone, :phone_one, :phone_two, :organization_id

  validates :username, :presence => true
end

今、私はDeviseをインストールしていusersて、列を持つテーブルを作成したいと考えていemailます. emailしかし、User はemailPersonから継承することになっているため、その列は必要ありません。

User モデルが People モデルから継承されるようにします。People には既にemail属性があるため、User にはもう必要ありません。

ロック可能なモジュールのテーブルではなく、Devise がメールを送信する必要があるときはいつでもemailテーブルの列を見るようにするにはどうすればよいですか?peopleusers

email移行から列を削除することはできますか?

4

1 に答える 1

1

個人の電子メールを検索するにはUser.email、devise のユーザー テーブル移行から電子メールを削除するだけです。

また、メール検証を削除することもできます https://github.com/plataformatec/devise/blob/master/lib/devise/models/validatable.rb#L24

于 2012-06-27T17:04:54.567 に答える