1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 07:08:01 +00:00

Add Attribute Getter without the Recursion as a rails til.

This commit is contained in:
jbranchaud
2015-04-08 08:25:20 -05:00
parent 4dbc79fd68
commit efbf364601
2 changed files with 27 additions and 0 deletions

View File

@@ -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)

View 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)