FormオブジェクトでBcryptのhas_secure_passwordを使用したいです。
Formオブジェクトでhas_secure_passwordを使用したいです。
Ruby on Railsで掲示板アプリをつくっています。
投稿にpassword_dijestカラムを用意して、passwordを使用する事で編集削除できる機能を実装しました。
現在タグ付機能の追加をしようと思い、タグモデル、投稿タグリレーションモデルを用意してFormオブジェクトを使用しています、するとパスワードが暗号化されなくなり編集削除時にエラーが起こります。
解決方法を教えて下さい。
発生している問題・エラー
BCrypt::Errors::InvalidHash
または、問題・エラーが起きている画像をここにドラッグアンドドロップ。
該当するソースコード
class RecruitsTag
include ActiveModel::Model
attr_accessor :name, :contact_id, :player_name, :style_id, :sex_id, :text, :tag_name, :password
HALF_NUMBER_REGEX = /\A[0-9]+\z/.freeze
has_secure_password
with_options presence: true do
validates :name
validates :player_name
validates :text
validates :tag_name
validates :password, format: { with: HALF_NUMBER_REGEX, message: "半角数字"}
end
def save
recruit = Recruit.create(name: name, contact_id: contact_id, player_name: player_name,style_id: style_id,
sex_id: sex_id, text: text, password_digest: password)
tag = Tag.where(tag_name: tag_name).first_or_initialize
tag.save
RecruitTagRelation.create(recruit_id: recruit.id, tag_id: tag.id)
end
end
ソースコードを入力
class Recruit < ApplicationRecord
extend ActiveHash::Associations::ActiveRecordExtensions
belongs_to_active_hash :contact
belongs_to_active_hash :style
belongs_to_active_hash :sex
has_many :recruit_tag_relations
has_many :tags, through: :recruit_tag_relations
has_secure_password
end
0 likes