提交 1eb79bcc 编写于 作者: M Michael Koziarski

Let alias_attribute work with attributes with initial capital letters (legacy...

Let alias_attribute work with attributes with initial capital letters (legacy columns etc).  Closes #8596 [mpalmer]



git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7195 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
上级 a4130564
*SVN*
* Let alias_attribute work with attributes with initial capital letters (legacy columns etc). Closes #8596 [mpalmer]
* Added Hash#except which is the inverse of Hash#slice -- return the hash except the keys that are specified [DHH]
* Added support for pluralization with a different starting letter than the singular version (cow/kine) #4929 [norri_b/hasmanyjosh]
......
......@@ -62,8 +62,8 @@ def alias_method_chain(target, feature)
# e.title # => "Megastars"
def alias_attribute(new_name, old_name)
module_eval <<-STR, __FILE__, __LINE__+1
def #{new_name}; #{old_name}; end
def #{new_name}?; #{old_name}?; end
def #{new_name}; self.#{old_name}; end
def #{new_name}?; self.#{old_name}?; end
def #{new_name}=(v); self.#{old_name} = v; end
STR
end
......
......@@ -2,15 +2,20 @@
module AttributeAliasing
class Content
attr_accessor :title
attr_accessor :title, :Data
def title?
!title.nil?
end
def Data?
!self.Data.nil?
end
end
class Email < Content
alias_attribute :subject, :title
alias_attribute :body, :Data
end
end
......@@ -28,4 +33,22 @@ def test_attribute_alias
assert_equal "We got a long way to go", e.title
assert e.title?
end
def test_aliasing_to_uppercase_attributes
# Although it's very un-Ruby, some people's AR-mapped tables have
# upper-case attributes, and when people want to alias those names
# to more sensible ones, everything goes *foof*.
e = AttributeAliasing::Email.new
assert !e.body?
assert !e.Data?
e.body = "No, really, this is not a joke."
assert_equal "No, really, this is not a joke.", e.Data
assert e.Data?
e.Data = "Uppercased methods are teh suck"
assert_equal "Uppercased methods are teh suck", e.body
assert e.body?
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册