3 ms·
So the underlying assumption is that there is always at least one attribute that serves as a "discriminator" between the billing plans, right? Is it possible to
by culi 1y ago
So the underlying assumption is that there is always at least one attribute that serves as a "discriminator" between the billing plans, right? Is it possible to represent something like this then?
```rb
[:red, 1.month, 10]
[:red, 1.year, 120]
[:blue, 1.month, 120]
[:blue, 1.year, 300]
```
Every possible attribute (name, interval, amount) has at least two objects that share a value
- brunosutic 1y agoYour input would work exactly as you wrote it if passed to `Billing::Plan.find_or_create_all_by_attrs!`, just add commas at the end of lines. If you want to make it even shorter, you have a few options - it really just comes down to preference: # Option 1. my personal favorite, follows structure of # intervals and plans on a pricing page. 1.month => {red: 10, blue: 120}, 1.year => {red: 120, blue: 300} # Option 2. this is fine too red: {1.month => 10, 1.year => 120}, blue: {1.month => 120, 1.year => 300} # Option 3. possible and works, but hurts my brain, NOT recommended 10 => {red: 1.month}, 120 => {red: 1.year, blue: 1.month}, 300 => {blue: 1.year} > there is always at least one attribute that serves as a "discriminator" between the billing plans, right Just a note: if you try to create two plans with the same attributes, that would error because of ActiveRecord uniqueness validations (and DB constraints). No point in having multiple identical plans.