[Dbix-class] might_have and is_nullable

Peter Rabbitson rabbit+dbic at rabbit.us
Wed Nov 17 12:41:25 GMT 2010


matthew couchman (JIC) wrote:
> Hi,
> 
>  
> 
> I’m getting the warning:
> 
>  
> 
> "might_have/has_one" must not be on columns with is_nullable set to 
> true. This might indicate an incorrect use of those relationship helpers 
> instead of belongs_to.
> 
>  
> 
> and the documentation also tells me that this is naughty. But surely by 
> saying that something /might/ have something it implies that it also 
> might /not/ have that something so it needs to be a nullable value. Do I 
> just need to specify it in a different way?
> 

might_have/has_one are *equivalent* to has_many, they just have different
return expectancy (belongs_to is the opposite relationship to all 3).

Imagine tables
CRASH_REPORT (id INTEGER, report TEXT)
DUI_REPORT (id INTEGER, report TEXT, crash_report_fk INTEGER IS NULL)

then CRASH_REPORT->might_have (dui_rep => DUI_REPORT...)
and DUI_REPORT->belongs_to (crash_rep => CRASH_REPORT ... { join_type => 'left' })

indicating that a crash may have an accompanying DUI, and a DUI may be filed
under a crash or standalone.

belongs_to is the only relationship allowed on the "I have a column
dedicated to hold someone else's id" side. Patches to make the documentation
clearer on this point sorely needed.

Cheers!



More information about the DBIx-Class mailing list