Kotlin
import android.graphics.BitmapFactory
import android.os.Bundle
import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory
import kotlinx.android.synthetic.main.activity_main.*
val bitmap = BitmapFactory.decodeResource(resources, R.drawable.myImage)
val rounded = RoundedBitmapDrawableFactory.create(resources, bitmap)
rounded.cornerRadius = 20f
profileImageView.setImageDrawable(rounded)
Чтобы сделать ImageView
Circular, мы можем изменить cornerRadius
с помощью:
rounded.isCircular = true
Кажется что Ваше использование has_one: через корректно. Проблема, которую Вы видите, имеет отношение к сохранению объектов. Чтобы ассоциация работала, объект, на который ссылаются потребности иметь идентификатор для заполнения model_id
поле для объекта. В этом случае, PackReleaseItems
имейте a pack_id
и a release_item_id
поле, которое должно быть заполнено, чтобы ассоциация работала правильно. Попытайтесь сохранить прежде, чем получить доступ к объектам через ассоциацию.
Вы хотите сохранить или создать (вместо нового) объект и пакет. Иначе база данных не присвоила идентификатор для ассоциации.
Ваша проблема находится в том, как Вы связываетесь ReleaseItem
и Pack
.
has_many :through
и has_one :through
обе работы через объект, который также действует как объединяющая таблица в этом случае PackReleaseItem
. Так как это не просто объединяющая таблица (если бы это было, то необходимо просто использовать has_many
без :through
), правильно создание ассоциации требует создания объекта соединения, как так:
>> item.pack_release_items.create :pack => pack
Что Вы делаете с Вашим item.pack = pack
вызов просто связывает объекты в памяти. Когда Вы идете для поиска его снова, это смотрит"through
" pack_release_items
, который пуст.