0
- 私は私の記事のテーブルには、位置列
- を持って
- レールのアプリでacts_as_list宝石を使用していますポジションは、私のモデルのbefore_createコールバックで割り当てられます:
class Post < ActiveRecord::Base
acts_as_list
before_create :set_position
attr_accessible :title, :description, :category_id
validates :position, :presence => true, :uniqueness => true
protected
def set_position
self.position = Post.all.size + 1
end
end
私の問題:これは私のPostモデルのためのコードである 私は、ユーザーが位置を設定することができるようにしたくないので、私はポストフォームから位置フィールドを削除しました。私が新しい投稿を提出すると、検証は失敗し、位置は空白にすることはできません。
ユーザが自分自身で位置を入力していないため、私の検証が失敗していることがわかりましたが、before_filterで位置を設定しましたので、検証を実行中にその情報を使用するにはどうすればよいですか?私は検証を削除すると
ボーナス質問 フォームを提出するが、私は位置がattr_accessibleし渡さないので、これは動作しますなぜ私は思っていましたか?私はそれに多くの他のシンボルを渡す:attr_accessible :title, :description, :category_id
しかし、私は:position
を渡すことはありません。そこに問題がある可能性はありますか?位置をattr_protectedにする必要がありますか?
おかげでそう、彼らは(おそらく位置がDBにnullになります)
attr_accesible
にあったものを保存し:position
上の任意のエラーを返すいけない (ログを確認してください)質量assigmentのwarrningを得、これは完璧です。 – stephenmurdochすべて私の喜び – codevoice