mirror of
https://github.com/jbranchaud/til
synced 2026-01-02 22:58:01 +00:00
Add Attribute Getter without the Recursion as a rails til.
This commit is contained in:
@@ -37,6 +37,7 @@ smart people at [Hashrocket](http://hashrocket.com/).
|
||||
|
||||
### rails
|
||||
|
||||
- [Attribute Getter without the Recursion](rails/attribute-getter-without-the-recursion.md)
|
||||
- [Attribute Was](rails/attribute-was.md)
|
||||
- [Capybara Page Status Code](rails/capybara-page-status-code.md)
|
||||
- [Creating Records of Has_One Associations](rails/creating-records-of-has-one-associations.md)
|
||||
|
||||
26
rails/attribute-getter-without-the-recursion.md
Normal file
26
rails/attribute-getter-without-the-recursion.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Attribute Getter without the Recursion
|
||||
|
||||
You may find yourself adding a custom *getter* method for one of the
|
||||
attributes in a Rails model. It might look something like this:
|
||||
|
||||
```ruby
|
||||
def name
|
||||
name || account.name
|
||||
end
|
||||
```
|
||||
|
||||
This method will fall on its face as it quickly expands the stack
|
||||
recursively calling itself. Instead, you can tell `ActiveRecord` that you
|
||||
want the value of that attribute without invoking the getter
|
||||
Instead, we want to get the value of the attribute without invoking the
|
||||
model's getter. `ActiveRecord` allows us to do this with the
|
||||
[`read_attribute`](http://api.rubyonrails.org/classes/ActiveRecord/AttributeMethods/Read.html#method-i-read_attribute)
|
||||
method. Check it out:
|
||||
|
||||
```ruby
|
||||
def name
|
||||
read_attribute(:name) || account.name
|
||||
end
|
||||
```
|
||||
|
||||
[source](http://stackoverflow.com/questions/21835116/overwrite-getter-activerecord-model-rails)
|
||||
Reference in New Issue
Block a user