0
chats
架构:上应用属性验证当与相同名称的功能存在
create_table "chats", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
t.integer "chat_type", limit: 2, null: false
t.text "message", limit: 65535
t.text "attachment_url", limit: 65535
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
chat.rb
:
class Chat < ApplicationRecord
TYPES = %w(text callback emergency charge)
validates :chat_type, :inclusion => { :in => 0...Chat::TYPES.size}
def chat_type
Chat::TYPES[read_attribute(:chat_type)]
end
end
的chat_type
属性是在数据库中的一个整数。所以我使用TYPES
常量和chat_type
函数(同名易于使用)将它映射到其相应的字符串值。
现在,当我尝试验证chat_type
它不起作用。事实上,它不允许我分配任何值。可以是0,1,2,3或'text','emergency'等。
我试着将函数名改为type
,它工作的很完美。
甚至可以使用相同的函数名称吗?或者我必须改变它到别的东西?