0

ユーザーモデルの創設者であるathletetとして定義されたメソッドと、デフォルト値がfalseのathleteとして定義されたブール列があります。

プロバイダーはtwitterまたはfacebookのいずれかです。プロバイダーがこれらのいずれでもなく、空白の場合は、以下の方法でアスリートの列をtrueに切り替えるだけです。

 def athlete?
    provider.blank?
  end

私は複数のことを試しましたが、運がない以下のトグル方法のような運がありません。

 def athlete?
    provider.blank?
    user.toggle!(:athlete)
  end
4

1 に答える 1

1

プロバイダーの列タイプがわからないため、「facebook」、「twitter」、「」の値が可能な文字列であると想定しています。このようなことを試して、あなたが得るものを私に知らせてください

def athlete?
  !provider.any? { |p| %w(facebook twitter).include?(p) }
end

これは、プロバイダーに「twitter」または「facebook」が含まれているかどうかを確認し、含まれていない場合はtrueを返すだけです。

属性を更新する場合は、次のようにします。

def athlete=(athlete)
  self[:athlete] = !provider.nil? && !provider.any? { |p| %w(facebook twitter).include?(p) } rescue true
end
于 2012-08-04T22:30:32.277 に答える