3

「検証済み」ユーザーでない限り、ユーザーの投稿は常にスーパーユーザーによってモデレートされる必要がある投稿のシステムをセットアップしています (User.verified = true)

User モデルに :verified というブール列を設定し、それが true の場合は、モデレーションを投稿して回避できるようにします。

だから、ユーザーが投稿に行くとき...投稿用の非表示フィールドを簡単に設定できることはわかっています。たとえば、投稿フォームに追加できます

<%= f.hidden_field :approved, :value => 1 if current_user.verified == 1 %>

ただし、これは安全ではないことはわかっており、誰でも簡単に firebug を使用してこれを変更できます。

このロジックをモデル/コントローラーに移動するためのベスト プラクティスは何ですか?または、この種のことをカバーし、「既定の」作成/更新アクションをオーバーライドまたは変更する適切なリソース リンクはありますか?

ありがとう

以下の回答によると、これが私の Post モデルにあるものです。

#If user is verified, set approved column to true
before_save :check_for_verified

def check_for_verified
    approved = user.verified?
end

ただし、今は保存できません。エラーは発生せず、保存が許可されません。

4

1 に答える 1

4

これはビューに属さないというあなたの感覚は正しいです。

これには多くの方法があります。1 つの方法は、モデルに before_create コールバックを設定し、ユーザーが確認された場合に承認済みを設定することです。

class Post

before_create :approve_if_user_verified

def approve_if_user_verified
  approved = user.verified?
end
于 2013-02-18T20:32:04.420 に答える