🔧 This rule is automatically fixable by the --fix
CLI option.
Note: this rule will not be added to the recommended
configuration because it enforces an opinionated, stylistic preference.
Name | Type |
---|---|
order |
Array |
const rules = {
'ember/order-in-models': [
2,
{
order: [
'spread',
'attribute',
'relationship',
'single-line-function',
'multi-line-function'
]
}
]
};
If you want some of properties to be treated equally in order you can group them into arrays, like so:
order: [
'attribute',
'relationship',
['single-line-function', 'multi-line-function']
];
If you would like to specify ordering for a property type that is not listed, you can use the custom property syntax custom:myPropertyName
in the order list to specify where the property should go.
You can find the full list of properties here.
You should write code grouped and ordered in this way:
- Attributes
- Relations
- Single line computed properties
- Multiline computed properties
- Other structures (custom methods etc.)
// GOOD
export default Model.extend({
// 1. Attributes
shape: attr('string'),
// 2. Relations
behaviors: hasMany('behaviour'),
// 3. Computed Properties
mood: computed('health', 'hunger', function () {
const result = this.health * this.hunger;
return result;
})
});
// BAD
export default Model.extend({
mood: computed('health', 'hunger', function () {
const result = this.health * this.hunger;
return result;
}),
hat: attr('string'),
behaviors: hasMany('behaviour'),
shape: attr('string')
});
Issue | Link |
---|---|
❌ Missing native JavaScript class support | #560 |